1. Technical Field
This disclosure generally relates to processors, and more specifically relates to out-of-order (OOO) processors.
2. Background Art
Processor architectures have become very sophisticated. Out-of-order (OOO) processors include multiple instruction execution pipelines and processing queues that process multiple instructions in parallel. An instruction sequencing unit in an OOO processor takes dispatched instructions and checks their dependencies to see if all older instructions with respect to a current instruction have delivered, or may predictably soon deliver, results of these older instructions that are needed before the current instruction can execute properly. When all dependencies have been satisfied, the instruction is ready to issue, and is issued as soon as possible, even when the instruction occurs in the code after other instructions that are still being processed. Because instructions can be issued out of order when compared to their order in the computer program, this type of processor is referred to in the art as an out-of-order (OOO) processor.
OOO processors typically include a deadlock counter, which is sometimes referred to as a “hang buster”, to break the processor out of a lockup condition that is preventing instructions from issuing. The hang buster typically operates based on a threshold value for a count of processor cycles. When the count of processor cycles exceeds the threshold value without any instruction issuing, the hang buster knows something in the instruction execution logic is locked up. Thus, the hang buster flushes one or more processing queues in the processor, which allows the processor to reload the processing queues and continue processing. Flushing one or more processing queues in the processor is a drastic measure, because all the benefits of parallel processing of instructions and out-of-order execution of instructions is momentarily lost until the processing queues are reloaded. As a result, the threshold value for a hang buster is typically set to a relatively high value, such as 30,000 processor cycles. Thus, in the prior art, if some high number of processor cycles pass without an instruction issuing, the hang buster flushes one or more processing queues to eliminate the conditions that caused the processing queues to lock up. At this point, processing of instructions continues, but resolving this lock condition did not happen until the high number of processor cycles passed. In addition, parallel and OOO execution will not continue until the processing queues are reloaded, which takes a significant period of time. The result is that when a lockup condition occurs in a OOO processor that prevents instructions from issuing, a severe performance penalty is paid to eliminate the lockup condition.